﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace Mosaik_complete_
{
    [Serializable()]
    class Bild
    {
        private string pfad;
        private int durchschnitt_rot;
        private int durchschnitt_blau;
        private int durchschnitt_gruen;
        private KnownColor farbe;

        public Bild(string _pfad)
        {
            pfad = _pfad;
            Bitmap bild = new Bitmap(pfad);
            int[] durchschnitt = ermittle_durchschnitt_farbe(bild);
            durchschnitt_rot = durchschnitt[0];
            durchschnitt_blau = durchschnitt[1];
            durchschnitt_gruen = durchschnitt[2];
            farbe = Color.FromArgb(durchschnitt_rot, durchschnitt_gruen, durchschnitt_blau).ToKnownColor();
        }

        public string p_pfad { get{return pfad;}  }
        public int p_durchschnitt_rot { get { return durchschnitt_rot; }  }
        public int p_durchschnitt_blau { get { return durchschnitt_blau; }  }
        public int p_durchschnitt_gruen { get { return durchschnitt_gruen; }  }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="bild"></param>
        /// <returns>gibt einen rot-blau-grün array zurück</returns>
        private int[] ermittle_durchschnitt_farbe(Bitmap bild)
        {
            //if(farbe.Name = Color.Red)
            float summe_R = 0;
            float summe_B = 0;
            float summe_G = 0;
            for (int i=0; i<bild.Height; i++)
            {
                for (int u=0; u<bild.Width; u++)
                {
                    summe_B += bild.GetPixel(u, i).B;
                    summe_R += bild.GetPixel(u, i).R;
                    summe_G += bild.GetPixel(u, i).G;
                }
            }
            int[] rueckgabe = new int[3];

            rueckgabe[0] = (int)(summe_R / (bild.Width * bild.Height));
            rueckgabe[1] = (int)(summe_B / (bild.Width * bild.Height));
            rueckgabe[2] = (int)(summe_G / (bild.Width * bild.Height));
            
            return rueckgabe;
        }
    }
}
